import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { Network } from '@ionic-native/network';
import {BrowserAnimationsModule} from "@angular/platform-browser/animations";

import { AppPage } from "./app.page";
import { Device } from '@ionic-native/device';
import { IonicStorageModule } from '@ionic/storage';
import { PhotoViewer } from '@ionic-native/photo-viewer';
import { SqliteService } from "./shared/services/sqliteDB/sqlite.service";

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { SecureStorage } from '@ionic-native/secure-storage';
import { HttpService, TokenService } from 'http-service';
import { SecureStorageService } from './shared/services/secure-storage.services';
import { AppAvailability } from '@ionic-native/app-availability';

import { UtilsService } from "./shared/services/utils.services";
import { ConfigService } from "./shared/services/config.service";
import { UploadPhotoService } from './shared/services/upload-photo.service';
import { UIComponentModule } from './shared/components/ui-components.module';
import { TabsPage } from './modules/main/pages/tabs/tabs.page';
import { MainService } from "./modules/main/main.service";

import { EncryptService } from "./shared/services/encrypt.service";
import { UserService } from "./shared/models/services/user.service";
import { AttachmentService } from "./shared/models/services/attachment.service";
import { BillService } from "./shared/models/services/bill.service";
import { DeviceService } from "./shared/models/services/device.service";
import { DistrictService } from "./shared/models/services/district.service";
import { SysUserService } from "./shared/models/services/sysUser.service";
import { WorkOrderService } from "./shared/models/services/work-order.service";
import { SyncService } from "./shared/services/offline/sync.servie";
import { UpdateWorkOrderService } from "./shared/services/offline/update-work-order.service";
import { UpdateBillService } from "./shared/services/offline/update-bill.service";
import { UpdateUserService } from "./shared/services/offline/update-user.service";
import { SyncUtilService } from "./shared/services/offline/sync.util.service";
import { SyncPushService } from "./shared/services/offline/sync-push.service";
import { StorageService } from "./shared/models/services/storage.service";
import { ApplicationsService } from './modules/main/services/applications.service';
import { TabService } from './modules/work-station/service/tab.service';
import { TabCardService } from './modules/work-station/service/card-list.service';
import { CurdService } from "./shared/models/services/curd.service";
import { Camera } from '@ionic-native/camera';
import { HomePage } from './modules/main/pages/home/home.page';

import { InspectionTasksService } from './shared/models/services/inspection/inspection-tasks.service';
import { InspectionRecordsService } from './shared/models/services/inspection/inspection-records.service';
import { InspectionOperationsService } from './shared/models/services/inspection/inspection-operations.service';
import { InspectionOperationsTicketsService } from './shared/models/services/inspection/inspection-operation-tickets.service';
import { InspectionManualsService } from './shared/models/services/inspection/inspection-manuals.service';
import { InspectionAttachmentsService } from './shared/models/services/inspection/inspection-attachments.service';
import { LogonService } from './shared/services/logon.services';

import { InspectionSyncService } from './shared/services/offline/inspection-sync.servie';

import { MyProfilePage } from "./modules/main/pages/my-profile-page/my-profile.page";
import { CardSettingsPage } from "./modules/card/page/card-settings/card-settings.page";
import { TabSettingsPage } from "./modules/work-station/page/tab-settings/tab-settings.page";
import { TabCreatePage } from "./modules/work-station/page/tab-create/tab-create.page";
import { CustomPage } from "./modules/main/pages/custom-page/custom-page.page";
import { CardService } from "./modules/card/services/card.service";
import { PDFService } from './shared/services/PDF.service';

import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';
import { FileOpener } from '@ionic-native/file-opener';
import { WorkTicketService } from './shared/models/services/inspection/work-ticket.service';
import { InspectionSysUserService } from './shared/models/services/inspection/inspection-sysUser.service';
import { InspectionTypeService } from './shared/models/services/inspection/inpestion-type.service';
import { InspectionPersonnelService } from './shared/models/services/inspection/inspection-personnel.services';
import { InspectionCompanyService } from './shared/models/services/inspection/inspection-company.service';
import { UserFeatureService } from './shared/models/services/user-feature.services';
import { UserCharacteristicRelationshipService } from './shared/models/services/user-characteristic-relationship.service';
import { BackButtonService } from './shared/services/back-button.service';
import { AppVersion } from '@ionic-native/app-version';
import { RefreshTokenService } from "./shared/services/refresh-token.service";
import {OperationalControlPageModule} from "./modules/operational/operational-control.page.module";

@NgModule({
    declarations: [
        AppPage,
        HomePage,
        MyProfilePage,
        CustomPage,
        TabCreatePage,
        CardSettingsPage,
        TabSettingsPage,
        TabsPage
    ],
    imports: [
        BrowserAnimationsModule,
        BrowserModule,
        OperationalControlPageModule,
        UIComponentModule.forRoot(),
        IonicStorageModule.forRoot(),
        IonicModule.forRoot(AppPage, {
            iconMode: 'ios',
            mode: 'ios',
            preloadModules: true,
            tabsHideOnSubPages: 'true',
            backButtonText: "",
            backButtonIcon: "ios-arrow-back-outline",
        })
    ],
    bootstrap: [IonicApp],
    entryComponents: [
        AppPage,
        HomePage,
        MyProfilePage,
        CustomPage,
        TabCreatePage,
        CardSettingsPage,
        TabSettingsPage,
        TabsPage
    ],
    providers: [
        Device,
        File,
        Camera,
        Network,
        StatusBar,
        SqliteService,
        SplashScreen,
        HttpService,
        TokenService,
        SqliteService,
        SecureStorageService,
        SecureStorage,
        AppAvailability,
        UtilsService,
        UploadPhotoService,
        ConfigService,
        MainService,
        UserService,
        BillService,
        AttachmentService,
        DeviceService,
        DistrictService,
        SysUserService,
        WorkOrderService,
        StorageService,
        SyncService,
        UpdateWorkOrderService,
        UpdateBillService,
        UpdateUserService,
        SyncUtilService,
        CurdService,
        ApplicationsService,
        TabService,
        TabCardService,
        InspectionTasksService,
        InspectionRecordsService,
        InspectionOperationsService,
        InspectionOperationsTicketsService,
        InspectionManualsService,
        InspectionAttachmentsService,
        SyncPushService,
        EncryptService,
        LogonService,
        InspectionSyncService,
        PDFService,
        PhotoViewer,
        FileTransfer,
        FileTransferObject,
        FileOpener,
        WorkTicketService,
        InspectionSysUserService,
        InspectionTypeService,
        InspectionCompanyService,
        InspectionPersonnelService,
        UserFeatureService,
        UserCharacteristicRelationshipService,
        BackButtonService,
        CardService,
        RefreshTokenService,
        AppVersion,
        { provide: ErrorHandler, useClass: IonicErrorHandler }
    ]
})
export class AppModule {
    //


}

